/*
Copyright (c) [2019年5月1日] [吴超]
[MBT_Studio] is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
		 http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
*/
#pragma once


#include <物体/物体.h>
#include <材质/预设材质.h>




API_EXPORT S_物体* f_node_创建虚拟体(S_设备环境& ctx);
API_EXPORT S_物体* f_node_创建物理虚拟体(S_设备环境& ctx);
API_EXPORT S_物体* f_node_创建区域光虚拟体(S_设备环境& ctx);
API_EXPORT S_物体* f_node_创建点光源虚拟体(S_设备环境& ctx);
API_EXPORT S_物体* f_node_创建平行光虚拟体(S_设备环境& ctx);


void	f_node_销毁虚拟体(S_物体* ob);



API_EXPORT S_Mesh* f_node_虚拟体网格创建_摄像机锥形(S_设备环境& ctx);
API_EXPORT S_Mesh* f_node_虚拟体网格创建_铰链轴(S_设备环境& ctx);
API_EXPORT S_Mesh* f_node_虚拟体网格创建_立方体(S_设备环境& ctx);
API_EXPORT S_Mesh* f_node_虚拟体网格创建_圆柱体(S_设备环境& ctx);
API_EXPORT S_Mesh* f_node_虚拟体网格创建_球体(S_设备环境& ctx);
API_EXPORT S_Mesh* f_node_虚拟体网格创建_平面(S_设备环境& ctx);
API_EXPORT S_Mesh* f_node_虚拟体网格创建_胶囊(S_设备环境& ctx);
API_EXPORT S_Mesh* f_node_虚拟体网格创建_链接线(S_设备环境& ctx);
API_EXPORT S_Mesh* f_node_虚拟体网格创建_灯光圆(S_设备环境& ctx);
API_EXPORT S_Mesh* f_node_虚拟体网格创建_灯光平行线(S_设备环境& ctx);
API_EXPORT S_Mesh* f_node_虚拟体网格创建_区域光四边线(S_设备环境& ctx);
//API_EXPORT S_Mesh* f_node_虚拟体网格创建_四边型(S_设备环境& ctx);
API_EXPORT S_Mesh* f_node_虚拟体网格创建_四边线(S_设备环境& ctx);
API_EXPORT S_Mesh* f_node_虚拟体网格创建_十字叉(S_设备环境& ctx);
API_EXPORT S_Mesh* f_node_虚拟体网格创建_范围圆(S_设备环境& ctx);

API_EXPORT S_Mesh* f_node_虚拟体网格创建_胶囊封套端(S_设备环境& ctx);
API_EXPORT S_Mesh* f_node_虚拟体网格创建_胶囊封套管(S_设备环境& ctx);

API_EXPORT S_Mesh* f_node_虚拟体网格创建_边界框(S_设备环境& ctx);
API_EXPORT S_Mesh* f_node_虚拟体网格创建_箭头(S_设备环境& ctx, E_轴向 方向);
API_EXPORT S_Mesh* f_node_虚拟体网格创建_旋转箭头(S_设备环境& ctx, E_轴向 方向);



API_EXPORT void f_node_虚拟体_设置摄像机虚拟网格(S_物体* ob, S_物体* 目标, S_摄像机* 摄像机, const vec3& loc);
API_EXPORT void f_node_虚拟体_设置平行光虚拟网格(S_物体* ob);
API_EXPORT void f_node_虚拟体_设置区域光虚拟网格(S_物体* ob);
API_EXPORT void f_node_虚拟体_设置点光源虚拟网格(S_物体* ob);

API_EXPORT S_Mesh* f_node_虚拟体_设置十字叉虚拟网格(S_物体* ob, S_Mesh* me = nullptr);
API_EXPORT S_Mesh* f_node_虚拟体_设置立方体虚拟网格(S_物体* ob, S_Mesh* me = nullptr);
API_EXPORT S_Mesh* f_node_虚拟体_设置圆柱体虚拟网格(S_物体* ob, S_Mesh* me = nullptr);
API_EXPORT S_Mesh* f_node_虚拟体_设置球体虚拟网格(S_物体* ob, S_Mesh* me = nullptr);
API_EXPORT S_Mesh* f_node_虚拟体_设置平面虚拟网格(S_物体* ob, S_Mesh* me = nullptr);
API_EXPORT S_Mesh* f_node_虚拟体_设置胶囊虚拟网格(S_物体* ob, S_Mesh* me = nullptr);
API_EXPORT S_Mesh* f_node_虚拟体_设置铰链轴虚拟网格(S_物体* ob, S_Mesh* me = nullptr);
API_EXPORT S_Mesh* f_node_虚拟体_设置模型虚拟网格(S_物体* ob, S_Mesh* rm);

API_EXPORT void f_node_虚拟体_设置单向力虚拟网格(S_物体* ob, E_形状 形状, bool 关闭范围);
API_EXPORT void f_node_虚拟体_设置径向力虚拟网格(S_物体* ob, E_形状 形状, bool 关闭范围);
API_EXPORT void f_node_虚拟体_设置旋转力虚拟网格(S_物体* ob, E_形状 形状, bool 关闭范围);
API_EXPORT void f_node_虚拟体_设置涡流力虚拟网格(S_物体* ob, E_形状 形状, bool 关闭范围);
API_EXPORT void f_node_虚拟体_设置力范围网格大小(S_物体* ob, E_形状 形状, vec2 半径, vec2 高度);


API_EXPORT void	f_node_create骨骼虚拟体网格(S_物体* 骨骼, bool 骨干 = true);
API_EXPORT S_物体*	f_node_create创建十字叉虚拟体(S_设备环境& ctx);













